home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1992 June: ROMin Holiday / ADC Developer CD (1992-06) (''ROMin Holiday'')_iso / Developer Connection - 06-1992.iso / Development Platforms / MPW Related / Animated Cursors / MenuTkl.c < prev    next >
Encoding:
C/C++ Source or Header  |  1990-09-14  |  6.4 KB  |  241 lines  |  [TEXT/MPS ]

  1. /******************************************************************************\
  2. * Header Files
  3. \******************************************************************************/
  4.  
  5. #include <Desk.h>
  6. #include <Errors.h>
  7. #include <Events.h>
  8. #include <Menus.h>
  9. #include <Resources.h>
  10. #include <ToolUtils.h>
  11. #include <Windows.h>
  12. #include "CursWindTkl.h"
  13. #include "MenuTkl.h"
  14. #include "QuitCmmd.h"
  15. #include "ShowCursor.h"
  16. #include "WindowTkl.h"
  17.  
  18.  
  19. /******************************************************************************\
  20. * Constant Declarations
  21. \******************************************************************************/
  22.  
  23. #define applMenuNum  128 //Menu number of Apple menu
  24. #define fileMenuNum  129 //Menu number of File menu
  25. #define editMenuNum  130 //Menu number of Edit menu
  26.  
  27. #define abotMenuItem 1   //Apple-menu item of About Sharkey command
  28.  
  29. #define quitMenuItem 1 //File-menu item of Quit command
  30.  
  31. #define undoMenuItem 1   //Edit-menu item of Undo command
  32. #define cutMenuItem  3   //Edit-menu item of Cut command
  33. #define copyMenuItem 4   //Edit-menu item of Copy command
  34. #define pastMenuItem 5   //Edit-menu item of Paste command
  35. #define clerMenuItem 6   //Edit-menu item of Clear command
  36.  
  37.  
  38. /******************************************************************************\
  39. * Function Declarations
  40. \******************************************************************************/
  41.  
  42. void DoApplMenu (short);
  43. void DoFileMenu (short);
  44. void DoEditMenu (short);
  45. void EditMenuDim (short);
  46.  
  47.  
  48. #pragma segment %A5Init
  49. /******************************************************************************\
  50. * StartMenus - Load and install menus
  51. *
  52. * StartMenus loads all the menu resources and installs them in the menu bar.
  53. * Finally, StartMenus draws the menu bar.
  54. \******************************************************************************/
  55.  
  56. void
  57. StartMenus ()
  58.     {
  59.     MenuHandle ApplMenuHnd; //=> Apple MENU resource
  60.     MenuHandle FileMenuHnd; //=> File MENU resource
  61.     MenuHandle EditMenuHnd; //=> Edit MENU resource
  62.  
  63.     ApplMenuHnd = (MenuHandle) null;
  64.     FileMenuHnd = (MenuHandle) null;
  65.     EditMenuHnd = (MenuHandle) null;
  66.     if ((ApplMenuHnd = GetMenu (applMenuNum)) == (MenuHandle) null)
  67.         goto Abort;
  68.     if ((FileMenuHnd = GetMenu (fileMenuNum)) == (MenuHandle) null)
  69.         goto Abort;
  70.     if ((EditMenuHnd = GetMenu (editMenuNum)) == (MenuHandle) null)
  71.         goto Abort;
  72.     AddResMenu (ApplMenuHnd, 'DRVR');
  73.     InsertMenu (ApplMenuHnd, 0);
  74.     InsertMenu (FileMenuHnd, 0);
  75.     InsertMenu (EditMenuHnd, 0);
  76.     DrawMenuBar ();
  77.     return;
  78.  
  79. Abort:
  80.     if (ApplMenuHnd != (MenuHandle) null)
  81.         ReleaseResource ((Handle) ApplMenuHnd);
  82.     if (FileMenuHnd != (MenuHandle) null)
  83.         ReleaseResource ((Handle) FileMenuHnd);
  84.     gApplErr = appDmgErr;
  85.     return;
  86.     }
  87.  
  88.  
  89. #pragma segment Main
  90. /******************************************************************************\
  91. * DoMenuEvent - Handle menu event
  92. *
  93. * DoMenuEvent handles a menu bar click by determining which menu item was chosen
  94. * and delegating power to the proper command handler.  The global flag quitFlag
  95. * is used.
  96. \******************************************************************************/
  97.  
  98. void
  99. DoMenuEvent (MenuChoice)
  100.     long MenuChoice; //Long result from MenuSelect >>
  101.     {
  102.     short MenuNum;  //Number of chosen menu
  103.     short MenuItem; //Number of chosen menu item
  104.  
  105.     MenuNum = (short) (MenuChoice >> 16L);
  106.     MenuItem = (short) MenuChoice;
  107.     switch (MenuNum)
  108.         {
  109.         case applMenuNum:
  110.             DoApplMenu (MenuItem);
  111.             break;
  112.         case fileMenuNum:
  113.             DoFileMenu (MenuItem);
  114.             break;
  115.         case editMenuNum:
  116.             DoEditMenu (MenuItem);
  117.             break;
  118.         default:
  119.             break;
  120.         }
  121.     if (! (gFlags & quitFlag))
  122.         HiliteMenu (0);
  123.     }
  124.  
  125.  
  126. #pragma segment Main
  127. /******************************************************************************\
  128. * DoApplMenu - Handle Apple-menu event
  129. *
  130. * DoApplMenu handles the choosing of an Apple-menu item.
  131. \******************************************************************************/
  132.  
  133. static void
  134. DoApplMenu (MenuItem)
  135.     short MenuItem; //Number of chosen menu item >>
  136.     {
  137.     Str255 DAName; //Name of DA
  138.  
  139.     if (MenuItem != abotMenuItem)
  140.         {
  141.         GetItem (GetMHandle (applMenuNum), MenuItem, DAName);
  142.         OpenDeskAcc (DAName);
  143.         }
  144.     }
  145.  
  146.  
  147. #pragma segment Main
  148. /******************************************************************************\
  149. * DoFileMenu - Handle File-menu event
  150. *
  151. * DoFileMenu handles the choosing of a file-menu item.
  152. \******************************************************************************/
  153.  
  154. static void
  155. DoFileMenu (MenuItem)
  156.     short MenuItem; //Number of chosen menu item >>
  157.     {
  158.     switch (MenuItem)
  159.         {
  160.         case quitMenuItem:
  161.             DoQuit ();
  162.             break;
  163.         default:
  164.             break;
  165.         }
  166.     }
  167.  
  168.  
  169. #pragma segment Main
  170. /******************************************************************************\
  171. * DoEditMenu - Handle Edit-menu event
  172. *
  173. * DoEditMenu handles the choosing of an edit-menu item.
  174. \******************************************************************************/
  175.  
  176. static void
  177. DoEditMenu (MenuItem)
  178.     short MenuItem; //Number of chosen menu item
  179.     {
  180.     SystemEdit (MenuItem - 1);
  181.     }
  182.  
  183.  
  184. #pragma segment Main
  185. /******************************************************************************\
  186. * FixMenuDim - Dim or undim menu items depending on conditions
  187. *
  188. * FixMenuDim dims or undims menu items depending upon the current conditions.
  189. \******************************************************************************/
  190.  
  191. void
  192. FixMenuDim ()
  193.     {
  194.     WindowPeek CurrWindow; //-> Currently active window
  195.  
  196.     CurrWindow = (WindowPeek) FrontWindow ();
  197.     if (CurrWindow != (WindowPeek) null)
  198.         {
  199.         if (CurrWindow->windowKind < 0)
  200.             EditMenuDim (true);
  201.         else if (CurrWindow->windowKind == cursWindKind)
  202.             EditMenuDim (false);
  203.         }
  204.     else
  205.         EditMenuDim (false);
  206.     }
  207.  
  208.  
  209. #pragma segment Main
  210. /******************************************************************************\
  211. * EditMenuDim - Dim or undim Edit menu
  212. *
  213. * EditMenuDim dims all items in the Edit menu if Enable is false, or enables all
  214. * Edit menu items if Enable is true.
  215. \******************************************************************************/
  216.  
  217. static void
  218. EditMenuDim (Enable)
  219.     short Enable; //True if enable, false if disable
  220.     {
  221.     MenuHandle EditMenu; //=> Edit menu/
  222.  
  223.     EditMenu = GetMenu (editMenuNum);
  224.     if (Enable)
  225.         {
  226.         EnableItem (EditMenu, undoMenuItem);
  227.         EnableItem (EditMenu, cutMenuItem);
  228.         EnableItem (EditMenu, copyMenuItem);
  229.         EnableItem (EditMenu, pastMenuItem);
  230.         EnableItem (EditMenu, clerMenuItem);
  231.         }
  232.     else
  233.         {
  234.         DisableItem (EditMenu, undoMenuItem);
  235.         DisableItem (EditMenu, cutMenuItem);
  236.         DisableItem (EditMenu, copyMenuItem);
  237.         DisableItem (EditMenu, pastMenuItem);
  238.         DisableItem (EditMenu, clerMenuItem);
  239.         }
  240.     }
  241.